/*******************************************************
 *Copyright (c) 2017 All Rights Reserved.
 *JDK版本： 1.8
 *公司名称：
 *命名空间：com.caltco.cargo.ops.entity
 *文件名：  SysUserEntity 
 *版本号：  V1.0.0.0
 *创建人：  daixirui
 *电子邮箱：daixirui@live.com
 *创建时间：2019-06-11 14:00
 *描述：
 *
 *=====================================================
 *修改标记
 *修改时间：2019-06-11 14:00
 *修改人：  daixirui
 *版本号：  V1.0.0.0
 *描述：
 *
 /******************************************************/
package com.caltco.cargo.ops.auth.entity;


import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.caltco.cargo.ops.auth.vo.RoleVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 系统用户
 *
 * @author
 * @email
 * @date 2016年9月18日 上午9:28:55
 */
@Data
@Schema(description = "用户信息")
public class UserEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */

    @Schema(description = "用户Id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long userId;

    /**
     * 用户名
     */
    @Schema(description = "用户名")
    private String username;

    /**
     * 密码
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @Schema(description = "密码")
    private String password;

    /**
     * 盐
     */
    @Schema(description = "盐")
    private String salt;

    /**
     * 邮箱
     */
    @Schema(description = "邮箱")
    private String email;

    /**
     * 手机号
     */
    @Schema(description = "手机号")
    private String mobile;

    /**
     * 状态  0：禁用   1：正常
     */
    @Schema(description = "状态  0：禁用   1：正常")
    private Integer status;

    /**
     * 角色ID列表
     */
    @Schema(description = "角色ID列表")
    private List<Long> roleIdList;

    /**
     *  角色
     */
    @Schema(description = "角色Id字符串")
    private String role;

    /**
     *  角色
     */
    @Schema(description = "角色对象")
    @TableField(exist=false)
    private List<RoleVo> roleList;

    /**
     * 项目列表
     */
    @Schema(description = "项目列表")
    private List<Long> projectIdList;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
     * 部门ID
     */
    @Schema(description = "部门ID")
    private Long deptId;

    /**
     * 部门名称
     */
    @Schema(description = "部门名称")
    private String deptName;

    /**
     * 中文名称
     */
    @Schema(description = "中文名称")
    private String chineseName;
    /**
     * 最后登录时间
     */
    @Schema(description = "最后登录时间")
    private Date dateLastLogin;
    /**
     * 默认UI皮肤
     */
    @Schema(description = "默认UI皮肤")
    private String skin;
    /**
     * 用户头像
     */
    @Schema(description = "用户头像")
    private String userPhoto;
    /**
     * 组织机构ID
     */
    @Schema(description = "组织机构ID")
    private String levelMarkId;
    /**
     * 性别
     */
    @Schema(description = "性别")
    private String sex;
    /**
     * 预留字段1
     */
    @Schema(description = "预留字段1")
    private String userExtValue1;
    /**
     * 预留字段2
     */
    @Schema(description = "预留字段2")
    private String userExtValue2;
    /**
     * 预留字段3
     */
    @Schema(description = "预留字段3")
    private String userExtValue3;
    /**
     * 预留字段4
     */
    @Schema(description = "预留字段4")
    private String userExtValue4;
    /**
     * 预留字段5
     */
    @Schema(description = "预留字段5")
    private String userExtValue5;
    /**
     * 下拉列表选中状态
     */
    @TableField(exist=false)
    @Schema(description = "下拉列表选中状态")
    private String selected;
    /**
     * 用户首页
     */
    @Schema(description = "用户首页")
    private String homepage;
    /**
     * 微信账号
     *
     */
    @Schema(description = "微信账号")
    private String wechat;

    /**
     * 钉钉账号
     *
     */
    @Schema(description = "钉钉账号")
    private String dingTalk;
    /**
     * 用户类型
     *
     */
    @Schema(description = "用户类型")
    private Integer loginType;

    @Schema(description = "菜单Id集合")
    private List<Long> menuIdList;

    /**
     * 组织机构
     */
    @Schema(description = "组织机构")
    @TableField(exist=false)
    private String levelMarkName;

    /**
     * 用户Token
     */
    @Schema(description = "用户Token")
    @TableField(exist=false)
    private String token;

    /**
     * 组织机构Ids ——  自定义部门权限
     */
    @Schema(description = "组织机构Ids ——  自定义部门权限")
    @TableField(exist=false)
    private List<Long> customLevelmarkIds;

    /**
     *组织机构Ids - 部门与子部门权限
     */
    @Schema(description = "组织机构Ids - 部门与子部门权限")
    @TableField(exist=false)
    private List<Long> childLevelmarkIds;

}